package _03_ArrayUse;
/**
 * 冒泡排序
 * 1.比较相邻的两个元素,如果第一个比第二大就交换位置
 * 2.对每一对相邻的元素做相同的工作,从第一对一直比较到最后一对,比较一轮结束后,最后一个元素一定是最大的
 * 3.针对所有元素,重复上面的步骤,除了最后一个元素
 * 4.持续循环中,比较次数越来越少,一直剩下一个数据(没有一对了,只有一个了),比较结束
 *
 *
 * 实现 :
 * 1.嵌套循环,因为循环一次只能查询出一个最大或者最小
 * 2.因为每次循环之后,最后一个不需要比较,所以每次循环,循环的次数都会减一,所以内存循环的循环次数取决于外层
 * 3.需要一个临时变量交换数据
 * 
 * @author lenovo
 * @Date 2020年7月1日
 * @Time 下午10:00:28
 */
public class Array_06 {

	public static void main(String[] args) {
		int[] a = { 3, 2, 4, 5, 1 };
		bubbleSort(a);
		for (int i : a) {
			System.out.println(i);
		}
		// 1 2 3 4 5
	}

	public static void bubbleSort(int[] a) {

		// 外层循环决定循环次数(共比较几轮)
		for (int i = 0; i < a.length - 1; i++) {

			// 内层循环决定每一次循环的循环次数
			for (int j = 0; j < a.length - 1 - i; j++) {

				// 如果是降序 就换成 < 即可
				if (a[j] > a[j + 1]) {
					int temp = a[j];
					a[j] = a[j + 1];
					a[j + 1] = temp;
				}
			}
		}
	}
}
